/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Classes;

/**
 *
 * @author guig
 */
public class Materiel {

    private int id;
    private long numCB;
    private int numCompta;
    private String numSerie;
    private String nom;
    private String descriptif;
    private String dateHT;
    private Double prixHT;
    private int garantie;
    private String numBC;
    private String budget;
    private double amortissement;
    private int idT;
    private int idF;
    private int idM;
    private int idS;
    private int idSc;

    /**
     * Constructeur
     *
     * @param numCB
     * @param numCompta
     * @param numSerie
     * @param nom
     * @param descriptif
     * @param dateHT
     * @param prixHT
     * @param garantie
     * @param numBC
     * @param budget
     * @param amortissement
     * @param idT
     * @param idF
     * @param idM
     * @param idS
     * @param idSc
     */
    public Materiel(long numCB, int numCompta, String numSerie, String nom, String descriptif, String dateHT, Double prixHT, int garantie, String numBC, String budget, double amortissement, int idT, int idM, int idS, int idSc) {
        this.numCB = numCB;
        this.numCompta = numCompta;
        this.numSerie = numSerie;
        this.nom = nom;
        this.descriptif = descriptif;
        this.dateHT = dateHT;
        this.prixHT = prixHT;
        this.garantie = garantie;
        this.numBC = numBC;
        this.budget = budget;
        this.amortissement = amortissement;
        this.idT = idT;
        this.idM = idM;
        this.idS = idS;
        this.idSc = idSc;
    }

    public Materiel() {
    }

    /**
     * Permet d'obtenir le numéro du code barre
     *
     * @return
     */
    public long getNumCB() {
        return numCB;
    }

    /**
     * Définie le numéro de code barre
     *
     * @param numCB
     */
    public void setNumCB(long numCB) {
        this.numCB = numCB;
    }

    /**
     * Permet d'obtenir le numéro de Comptabilité
     *
     * @return
     */
    public int getNumCompta() {
        return numCompta;
    }

    /**
     * Définie le numéro Comptabilité
     *
     * @param numCompta
     */
    public void setNumCompta(int numCompta) {
        this.numCompta = numCompta;
    }

    /**
     * Permet d'obtenir le numéro de série
     *
     * @return
     */
    public String getNumSerie() {
        return numSerie;
    }

    /**
     * Définie le numéro de série
     *
     * @param numSerie
     */
    public void setNumSerie(String numSerie) {
        this.numSerie = numSerie;
    }

    /**
     * Permet d'obtenir le nom
     *
     * @return
     */
    public String getNom() {
        return nom;
    }

    /**
     * Définie le nom
     *
     * @param nom
     */
    public void setNom(String nom) {
        this.nom = nom;
    }

    public String getDescriptif() {
        return descriptif;
    }

    public void setDescriptif(String descriptif) {
        this.descriptif = descriptif;
    }

    public String getDateHT() {
        return dateHT;
    }

    public void setDateHT(String dateHT) {
        this.dateHT = dateHT;
    }

    public Double getPrixHT() {
        return prixHT;
    }

    public void setPrixHT(Double prixHT) {
        this.prixHT = prixHT;
    }

    public int getGarantie() {
        return garantie;
    }

    public void setGarantie(int garantie) {
        this.garantie = garantie;
    }

    public String getNumBC() {
        return numBC;
    }

    public void setNumBC(String numBC) {
        this.numBC = numBC;
    }

    public String getBudget() {
        return budget;
    }

    public void setBudget(String budget) {
        this.budget = budget;
    }

    public double getAmortissement() {
        return amortissement;
    }

    public void setAmortissement(double amortissement) {
        this.amortissement = amortissement;
    }

    public int getIdT() {
        return idT;
    }

    public void setIdT(int idT) {
        this.idT = idT;
    }

    public int getIdF() {
        return idF;
    }

    public void setIdF(int idF) {
        this.idF = idF;
    }

    public int getIdM() {
        return idM;
    }

    public void setIdM(int idM) {
        this.idM = idM;
    }

    public int getIdS() {
        return idS;
    }

    public void setIdS(int idS) {
        this.idS = idS;
    }

    public int getIdSc() {
        return idSc;
    }

    public void setIdSc(int idSc) {
        this.idSc = idSc;
    }
/**
 * Procédure qui genere un code barre 
 */
    public void createCodeBarre() {
        String secteur = new String();
        String typemat = new String();
        String idmat = new String();
        String tmpNumCB = new String();

        secteur = Integer.toString(idSc);
        typemat = Integer.toString(idT);
        idmat = Integer.toString(id);

        while (secteur.length() < 2) {
            secteur = "0" + secteur;
        }
        while (typemat.length() < 3) {
            typemat = "0" + typemat;
        } 
        while (idmat.length() < 5) {
            idmat = "0" + idmat;
        }

        tmpNumCB = secteur //ID SECTEUR
                + dateHT.substring((dateHT.length() - 2)) // ANNEE
                + typemat// CODE MATERIEL
                + idmat;// ID

        if (tmpNumCB.length() == 12) {
            tmpNumCB = caculateCheckDigit(tmpNumCB);
        }

        numCB = Long.decode(tmpNumCB);

    }
/**
 * Fonction qui prend en parametre le début du code barre afin de calculer le checkdigit
 * @param data 
 * @return integer
 * 
 * 
 * 
 * 
 */
    public String caculateCheckDigit(String data) {
        String code;
        int v1, v2, i, sum = 0, checkdigit;

        for (i = 0; i < data.length(); i += 2) {
            v1 = Integer.decode(data.substring(i, i + 1));
            v2 = Integer.decode(data.substring(i + 1, i + 2)) * 3;
            sum = sum + v1 + v2;
        }
        checkdigit = 10 - (sum % 10);
        
        if(checkdigit == 10)
            checkdigit = 0;

        return data + Integer.toString(checkdigit);
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    /**
     * Surcharge de la méthode toString() qui permet de redéfinir la méthode par défaut
     * @return String
     */
    @Override
    public String toString() {
        return Long.toString(numCB);
    }
    
}
